package cn.iocoder.yudao.framework.common;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * netty框架相关配置
 *
 * @author wgs
 */
@ConfigurationProperties(prefix = "yudao.netty.config")
@Data
@Configuration
public class NettyFrameworkConfig {

    /**
     * netty服务端口
     */
    private int nettyPort = 8088;

    private int bossThreads = 1;
    /**
     * 工作线程的数量
     **/
    private int workThreads = Runtime.getRuntime().availableProcessors() * 2;

    /**
     * 服务端可连接队列大小
     */
    private int backlog = 1024;

    /**
     * 连接超时时间，单位毫秒
     */
    private long connectTimeout = 3000;

    /**
     * 发送缓冲区64KB
     */
    private int sendBuffSize = 64 * 1024;

    /**
     * 接收缓冲区64KB
     */
    private int receiveBuffSize = 64 * 1024;

    /**
     * 接收到消息的最大长度
     */
    private int maxFrameLength = 1024 * 1024 * 2;
    /**
     * 客户端请求QPS限制
     */
    @Deprecated
    private int requestQps = 50;

    /**
     * 全局客户端请求QPS限制
     */
    private int globalRequestQps = 5000;
    /**
     * 连接最大空闲时间,单位秒
     */
    @Deprecated
    private int maxIdleTime = 60;
    /**
     * 连接认证超时时间，单位秒
     */
    @Deprecated
    private int confirmTimeout = 30;
    /**
     * 消息响应的缓存时间,单位毫秒
     */
    @Deprecated
    private int responseCacheTime = 120000;
    /**
     * 游戏IO异步线程数
     */
    private int ioThreadCount = Runtime.getRuntime().availableProcessors();

    /**
     * 游戏缓存对象的最大个数
     */
    @Deprecated
    private int maxGameCacheModelCount = 2048;
    /**
     * 游戏缓存对象在内存中的空闲最大时间，在这个时间内如果对象不再被使用，将被移除,单位是秒
     */
    @Deprecated
    private int maxGameCacheModelIdleTime = 600;

    /**
     * 业务核心线程数
     */
    private Integer businessThreads = Runtime.getRuntime().availableProcessors() * 64;

}
